// 读取正整数 n，再读取 n 个字符，统计英文字母、空格或回车、数字和其他字符数量
#include <stdio.h>

static void classify_char(char ch, int *letters, int *spaces_or_enter, int *digits, int *others)
{
    if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z')) {
        (*letters)++;
    } else if (ch == ' ' || ch == '\n' || ch == '\r') {
        (*spaces_or_enter)++;
    } else if (ch >= '0' && ch <= '9') {
        (*digits)++;
    } else {
        (*others)++;
    }
}

int main(void)
{
    int n;
    if (scanf("%d", &n) != 1) {
        return 0;
    }
    if (n <= 0) {
        return 0;
    }

    int letters = 0, spaces_or_enter = 0, digits = 0, others = 0;

    // 处理紧随其后的一个字符：若是换行/回车则丢弃，否则计入第一个字符
    int c = getchar();
    int read_count = 0;
    if (c != EOF) {
        if (c == '\n' || c == '\r') {
            // 丢弃行结束符，后续正式读取 n 个字符
        } else {
            classify_char((char)c, &letters, &spaces_or_enter, &digits, &others);
            read_count = 1;
        }
    }

    while (read_count < n) {
        c = getchar();
        if (c == EOF) {
            break; // 输入不足时提前结束
        }
        classify_char((char)c, &letters, &spaces_or_enter, &digits, &others);
        read_count++;
    }

    // 按题目顺序输出：英文字母、空格或回车、数字字符、其他字符
    printf("%d %d %d %d", letters, spaces_or_enter, digits, others);
    return 0;
}